/* 
说明 实现一个方法 找出数组中第k大和第m大的数字相加之和
示例：
  let arr = [1, 2, 4, 4, 3, 5], k = 2, m = 4
  findTopSum(arr, k, m) // 第2大的数是4 出现2次 第4大的数是2 出现1次 所以结果为10
*/
function findTopSum(arr, k, m) {
  if (arr.length < k || arr.length < m) return null
  let newArr = [...new Set(arr)].sort((a, b) => a - b)
  // console.log(newArr) // 去重并排序了
  let result = null
  // 确定重复次数
  let firstValue = newArr[newArr.length - k ] // 去重之后按大小顺序排序了 然后就可以在新的数组中 找出K大的数了 直接用数组长度减2 就是第二大的
  // console.log(firstValue)
  let lastValue = newArr[newArr.length - m]
  // console.log(lastValue)
  // 保存最大数 最后结果应减去重复的一次 因为有一次是它本身
  let firstTemp = firstValue
  let lastTemp = lastValue
  arr.forEach(res => {
    // console.log(res)
    if (res === firstTemp) {
      firstValue = firstValue + res
    }
    if (res === lastTemp) {
      lastValue = lastValue + res
    }
  })
  result = firstValue + lastValue - firstTemp - lastTemp
  // console.log(result)
  return result
}
let arr = [1, 2, 4, 4, 3, 5, 6], k = 2, m = 4
console.log(findTopSum(arr, k, m))
